package school.web.validators;

import org.springframework.validation.Errors;

import school.domain.Customer;

public class CustomerValidator {
	public void validate(Customer customer, Errors errors) {
		if (customer.getUsername().matches(".*[^a-zA-Z0-9].*")) {
			System.out.println(customer.getUsername());
			errors.rejectValue("username", "username invalid", "Login zawiera niedozwolone znaki.");
		}
		
		if (customer.getPassword().matches(".*[^a-zA-Z0-9].*")) {
			errors.rejectValue("password", "password invalid", "Hasło zawiera niedozwolone znaki.");
		}
		
		if (customer.getFirstName().matches(".*[^a-zA-ZąężźćółĄĘŻŹĆÓŁŚ].*")) {
			errors.rejectValue("firstName", "fName invalid", "Imię zawiera niedozwolone znaki.");
		}

		if (customer.getLastName().matches(".*[^a-zA-ZąężźćółĄĘŻŹĆÓŁŚ-].*")) {
			errors.rejectValue("lastName", "lName invalid", "Nazwisko zawiera niedozwolone znaki.");
		}

		if (customer.getStreet().matches(".*[^0-9a-zA-ZąężźćółĄŚĘŻŹĆÓŁ. -].*")) {
			errors.rejectValue("street", "street invalid", "Ulica zawiera niedozwolone znaki.");
		}

		if (customer.getBuildingNumber().matches(".*[^0-9].*")) {
			errors.rejectValue("buildingNumber", "buildingNumber invalid", "Numer budynku zawiera niedozwolone znaki.");
		}

		if (customer.getApartmentNumber().matches(".*[^0-9a-zA-Z].*")) {
			errors.rejectValue("apartmentNumber", "apartmentNumber invalid", "Numer mieszkania zawiera niedozwolone znaki.");
		}

		if (!(customer.getPostalCode().matches("[0-9]{2}[-][0-9]{3}"))) {
			errors.rejectValue("postalCode", "postal invalid", "Kod pocztowy zawiera niedozwolone znaki.");
		}

		if (customer.getCity().matches(".*[^0-9a-zA-ZąężźćółĄŚĘŻŹĆÓŁ. -].*")) {
			errors.rejectValue("city", "city invalid", "Miasto zawiera niedozwolone znaki.");
		}

		if (!(customer.getDateOfBirth()
				.matches("[0-9]{4}[.][0-9]{2}[.][0-9]{2}"))) {
			errors.rejectValue("dateOfBirth", "dateOfBirth invalid", "Data urodzin zawiera niedozwolone znaki.");
		}

		if (!(customer.getEmail()
				.matches("[0-9a-zA-Z_.-]+@[0-9a-zA-Z.-]+.[a-zA-Z]{2,3}"))) {
			errors.rejectValue("email", "email invalid","E-mail zawiera niedozwolone znaki.");
		}

		if (customer.getPhoneNumber().matches("([(](0-)?[0-9]{2}[)])?[0-9]{7}|[0-9]{9}")) {
			errors.rejectValue("phoneNumber", "phoneNumber invalid","Numer telefonu zawiera niedozwolone znaki.");
		}
	}
}
